1. Technical Field
This invention pertains to the field of digital data processing, particularly to the field of techniques for maximizing data processing throughput across a set of data processing programs dynamically sharing a data processing system comprising multiple processing cores.
2. Descriptions of the Related Art
Computing systems will increasingly be based on multiple processing cores, even in case of traditional single-user devices such as personal computers (PCs), tablet PCs, mobile phones, communicators etc, as well as in higher capacity server type computers. Single software applications will accordingly increasingly be executing on multiple such processing cores in parallel, while the computing hardware (comprising multiple processing cores) will be shared by a number of software applications, some of which may belong to different users. As a result, the set of application program processing tasks running on the set of cores of a given multi-core based computer will need to be updated, potentially highly frequently, in order to pursue sufficiently high application program level as well as system wide processing throughput. To enable such dynamic updating of processing tasks for the set of processing cores, innovations are needed to support efficiently transferring the processing context (e.g. latest state of processing data and interim results, and possibly instructions) of any given task to any core of the system, as well as to support efficient communication among the tasks of an application program running on the multi-core data processing system. Particular challenges to be solved include achieving cost-efficient scalability of such inter-core and inter-task information exchange networks as the number of cores and processing applications and their tasks continuous to grow, while supporting restriction-free, dynamically optimized allocation and assignment of the system processing resources among tasks of the programs configured for a given multi-core processor, to enable high efficiency of system resource usage under varying processing loads presented by the application programs and their tasks.